package com.softtown.modules.workflow.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.softtown.common.service.impl.BaseServiceImpl;
import com.softtown.modules.workflow.dao.SwfDocPhaseDefDao;
import com.softtown.modules.workflow.dto.SwfDocPhaseDefDTO;
import com.softtown.modules.workflow.dto.SwfDocPhaseDefPageDTO;
import com.softtown.modules.workflow.entity.SwfDocPhaseDefEntity;
import com.softtown.modules.workflow.service.SwfDocPhaseDefService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author: Dingyayong
 * @Date: 2019/8/22 13:57
 * @Description:
 */
@Service
public class SwfDocPhaseDefServiceImpl extends BaseServiceImpl<SwfDocPhaseDefDao, SwfDocPhaseDefEntity> implements SwfDocPhaseDefService {

    /**
     * 获取该公司出差申请审批段
     *
     * @param swfDocPhaseDefDTO 公司审批段DTO
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author Dingyayong
     * @Date 2020/4/13 17:26
     */
    @Override
    public List<SwfDocPhaseDefEntity> getDocPhaseDef(SwfDocPhaseDefDTO swfDocPhaseDefDTO) {
        return baseDao.getDocPhaseDef(swfDocPhaseDefDTO.getCompId());
    }

    /**
     * 获取该公司差旅报销审批段
     *
     * @param swfDocPhaseDefDTO 公司审批段DTO
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author Dingyayong
     * @Date 2020/4/13 17:30
     */
    @Override
    public List<SwfDocPhaseDefEntity> getTravelDocPhaseDef(SwfDocPhaseDefDTO swfDocPhaseDefDTO) {
        return baseDao.getTravelDocPhaseDef(swfDocPhaseDefDTO.getCompId());
    }

    /**
     * 通过审批段定义id获取该公司出差申请审批段
     *
     * @param phaseId 审批段定义id
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author Dingyayong
     * @Date 2020/4/13 17:34
     */
    @Override
    public List<SwfDocPhaseDefEntity> getDocPhaseDefByphaseId(Long phaseId) {
        return baseDao.getDocPhaseDefByphaseId(phaseId);
    }

    /**
     * 单据审批设置分页
     *
     * @param swfDocPhaseDefPageDTO 公司单据审批DTO
     * @return com.github.pagehelper.PageInfo<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author Dingyayong
     * @Date 2020/4/13 17:35
     */
    @Override
    public PageInfo<SwfDocPhaseDefEntity> getDocPhaseDefList(SwfDocPhaseDefPageDTO swfDocPhaseDefPageDTO) {
        Integer pageSize = swfDocPhaseDefPageDTO.getPageSize();
        Integer page = swfDocPhaseDefPageDTO.getPage();
        if (pageSize > 0 && page > 0) {
            PageHelper.startPage(page, pageSize);
        }
        List<SwfDocPhaseDefEntity> swfDocPhaseDefEntities = baseDao.getDocPhaseDefList(swfDocPhaseDefPageDTO.getCompId(), swfDocPhaseDefPageDTO.getParam());
        return new PageInfo<>(swfDocPhaseDefEntities);
    }

    /**
     * 通过审批类型获取该公司出差申请审批段
     *
     * @param docTypeValue 审批类型
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author Dingyayong
     * @Date 2020/4/13 17:35
     */
    @Override
    public List<SwfDocPhaseDefEntity> checkDocPhaseDef(Long compId,String docTypeValue) {
        return baseDao.checkDocPhaseDef(compId,docTypeValue);
    }

    /**
     * 根据该公司单据类型获取审批段设置
     *
     * @param swfDocPhaseDefDTO 公司审批段DTO
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author Dingyayong
     * @Date 2020/4/13 17:36
     */
    @Override
    public List<SwfDocPhaseDefEntity> getDocPhaseDefByDocType(SwfDocPhaseDefDTO swfDocPhaseDefDTO) {
        return baseDao.getDocPhaseDefByDocType(swfDocPhaseDefDTO.getCompId(), swfDocPhaseDefDTO.getDocTypeValue());
    }

    /**
     * 获取该公司借款申请审批段
     *
     * @param swfDocPhaseDefDTO 公司审批段DTO
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @author fuming
     * @date 2019/10/29 11:07
     */
    @Override
    public List<SwfDocPhaseDefEntity> getAdvDocPhaseDef(SwfDocPhaseDefDTO swfDocPhaseDefDTO) {
        return baseDao.getAdvDocPhaseDef(swfDocPhaseDefDTO.getCompId());
    }

    /**
     * 查找该公司差旅审批段定义
     *
     * @param compId 公司id
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author Dingyayong
     * @Date 2020/4/13 17:37
     */
    @Override
    public List<SwfDocPhaseDefEntity> getActHeadDocPhaseDefList(Long compId) {
        return baseDao.getActHeadDocPhaseDefList(compId);
    }

    /**
     * 查找该公司单据类型对应的审批段定义
     *
     * @param compId       公司id
     * @param docTypeValue 单据类型
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author Dingyayong
     * @Date 2020/4/13 17:38
     */
    @Override
    public List<SwfDocPhaseDefEntity> getDocPhaseDefListByDocType(Long compId, String docTypeValue) {
        return baseDao.getDocPhaseDefByDocType(compId, docTypeValue);
    }

    /**
     * 删除修改审批段定义
     *
     * @param swfDocPhaseDefEntity 单据审批段定义实体类
     * @return void
     * @Author Dingyayong
     * @Date 2020/4/13 17:39
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateDocPhaseDef(SwfDocPhaseDefEntity swfDocPhaseDefEntity) {
        baseDao.updateDocPhaseDef(swfDocPhaseDefEntity);
    }

    /**
     * 获取该公司费用申请审批段
     *
     * @param swfDocPhaseDefDTO 公司审批段DTO
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author fuming
     * @Date 2019/12/19 17:53
     */
    @Override
    public List<SwfDocPhaseDefEntity> selectGenlDocPhaseDef(SwfDocPhaseDefDTO swfDocPhaseDefDTO) {
        return baseDao.selectGenlDocPhaseDef(swfDocPhaseDefDTO.getCompId());
    }
}
